package com.yitao.client.dto.order;

import java.util.Date;
import java.util.List;

import com.skipper.base.dto.BaseDto;
import com.yitao.client.model.shopInfo.ShopUserGradeWealModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;


/**
 * @author skipper
 * @date 2019-03-06
 * @desc 如该dto不需要id继承 BaseDto 即可 如需id 则根据情况选择  BaseDtoWithId  或 BaseDtoWithStringId
 * @see
 */

@Data
public class MallOrderDto extends BaseDto {


    /**
     * id
     */
    @ApiModelProperty("id")
    private Long id;

    @ApiModelProperty("订单父id")
    private Long parentId;


    /**
     * 订单code
     */
    @ApiModelProperty("订单code")
    private String orderCode;


    /**
     * 父级订单
     */
    @ApiModelProperty("父级订单")
    private String parentOrderCode;


    /**
     * 拼单的订单的id 适用于拼单订单
     */
    @ApiModelProperty("拼单的订单的id 适用于拼单订单")
    private Long shareOrderId;


    /**
     * 订单类型 默认为1 1:普通商城订单，2 拼单订单
     */
    @ApiModelProperty("订单类型 默认为1 1:普通商城订单，2 拼单订单")
    private Integer orderType;


    /**
     * 下单人的用户id
     */
    @ApiModelProperty("下单人的用户id")
    private Long buyerUserId;


    /**
     * 下单人的用户昵称
     */
    @ApiModelProperty("下单人的用户昵称")
    private String buyerUserName;


    /**
     * 下单人的用户手机号
     */
    @ApiModelProperty("下单人的用户手机号")
    private String buyerUserPhone;


    /**
     * 下单人的身份证姓名
     */
    @ApiModelProperty("下单人的身份证姓名")
    private String buyerRealName;


    /**
     * 下单人的身份证号码
     */
    @ApiModelProperty("下单人的身份证号码")
    private String buyerCardNo;


    /**
     * 拼单人的用户id
     */
    @ApiModelProperty("拼单人的用户id")
    private Long shareUserId;


    /**
     * 拼单人的用户昵称 冗余字段
     */
    @ApiModelProperty("拼单人的用户昵称 冗余字段")
    private String shareUserName;


    /**
     * 拼单人的用户头像 冗余字段
     */
    @ApiModelProperty("拼单人的用户头像 冗余字段")
    private String buyerUserHeadUrl;


    /**
     * 订单支付类型
     */
    @ApiModelProperty("订单支付类型")
    private String payType;


    /**
     * 订单总金额 单位为分
     */
    @ApiModelProperty("订单总金额 单位为分")
    private Long orderTotalAmount;


    /**
     * 商品总金额 单位为分
     */
    @ApiModelProperty("商品总金额 单位为分")
    private Long itemTotalAmount;


    /**
     * 实际应该支付金额 单位为分
     */
    @ApiModelProperty("实际应该支付金额 单位为分")
    private Long actualAmount;


    /**
     * 现金帐户等支付的金额(除去优惠券 抵扣劵 余额等)
     */
    @ApiModelProperty("现金帐户等支付的金额(除去优惠券 抵扣劵 余额等)")
    private Long confirmPaidFee;


    /**
     * 运费
     */
    @ApiModelProperty("运费")
    private Long freightFee;

    /**
     * 折扣
     */
    @ApiModelProperty("折扣")
    private Double discount;


    /**
     * 使用的折扣劵码
     */
    @ApiModelProperty("使用的折扣劵码")
    private String discountKey;


    /**
     * micro_team_id
     */
    @ApiModelProperty("micro_team_id")
    private Long microTeamId;


    /**
     * 优惠金额(促销活动)
     */
    @ApiModelProperty("优惠金额(促销活动)")
    private Long favorableFee1;


    /**
     * 优惠金额(优惠券，微商推广折扣)
     */
    @ApiModelProperty("优惠金额(优惠券，微商推广折扣)")
    private Long favorableFee2;


    /**
     * 优惠金额(其他)
     */
    @ApiModelProperty("优惠金额(其他)")
    private Long favorableFee3;


    /**
     * 赠品金额
     */
    @ApiModelProperty("赠品金额")
    private Long largessAmount;


    /**
     * 赔偿类型 1:运费，2:物损
     */
    @ApiModelProperty("赔偿类型 1:运费，2:物损")
    private Integer compensationType;


    /**
     * 赔偿金额 单位为分
     */
    @ApiModelProperty("赔偿金额 单位为分")
    private Long compensationAmount;


    /**
     * 退换货金额 单位为分
     */
    @ApiModelProperty("退换货金额 单位为分")
    private Long returnAmount;


    /**
     * 订单状态 10:未审核 20:审核通过 21:审核不通过 25待拼团 30:待复核 -1:撤销 60:交易完成 70:订单完结
     */
    @ApiModelProperty("订单状态 10:未审核 20:审核通过 21:审核不通过 25待拼团 30:待复核 -1:撤销 60:交易完成 70:订单完结")
    private Integer orderStatus;


    /**
     * 支付状态 0:未付款 1:已付款
     */
    @ApiModelProperty("支付状态 0:未付款 1:已付款")
    private Integer payStatus;


    /**
     * 物流状态 1:备货中 2:待发货 3:已发货 4:已签收
     */
    @ApiModelProperty("物流状态 1:备货中 2:待发货 3:已发货 4:已签收")
    private Integer logisticStatus;


    /**
     * 签收状态 1:未签收 2:客户已签收 3:客服代签收
     */
    @ApiModelProperty("签收状态 1:未签收 2:客户已签收 3:客服代签收")
    private Integer signStatus;


    /**
     * 收货地址关联id
     */
    @ApiModelProperty("收货地址关联id")
    private Long orderDeliveryAddressId;


    /**
     * 发票关联id
     */
    @ApiModelProperty("发票关联id")
    private Long invoiceId;


    /**
     * 店铺关联id
     */
    @ApiModelProperty("店铺关联id")
    private Long shopId;


    /**
     * 店铺名称，冗余字段
     */
    @ApiModelProperty("店铺名称，冗余字段")
    private String shopName;


    /**
     * 商品计数
     */
    @ApiModelProperty("商品计数")
    private Integer quantity;


    /**
     * 订单来源 1:pc 2:android 3:ios 4:wap
     */
    @ApiModelProperty("订单来源 1:pc 2:android 3:ios 4:wap")
    private Integer orderSource;


    /**
     * 渠道来源 1:官方自推
     */
    @ApiModelProperty("渠道来源 1:官方自推")
    private Integer channelSource;


    /**
     * 订单备注
     */
    @ApiModelProperty("订单备注")
    private String remake;


    /**
     * 配送方式(物流方式)
     */
    @ApiModelProperty("配送方式(物流方式)")
    private Long deliveryId;


    /**
     * 是否是父级订单 0否 1是
     */
    @ApiModelProperty("是否是父级订单 0否 1是")
    private Boolean isParentOrder;


    /**
     * 是否申请取消
     */
    @ApiModelProperty("是否申请取消")
    private Boolean isApplyCancel;


    /**
     * 供应商id
     */
    @ApiModelProperty("供应商id")
    private Long supplierId;


    /**
     * 供应商名称
     */
    @ApiModelProperty("供应商名称")
    private String supplierName;


    /**
     * 订单审核时间
     */
    @ApiModelProperty("订单审核时间")
    private Date approvedTime;


    /**
     * 支付完成时间
     */
    @ApiModelProperty("支付完成时间")
    private Date payTime;


    /**
     * 订单取消时间
     */
    @ApiModelProperty("订单取消时间")
    private Date cancelTime;


    /**
     * 发货时间
     */
    @ApiModelProperty("发货时间")
    private Date shippingTime;


    /**
     * 订单完成时间
     */
    @ApiModelProperty("订单完成时间")
    private Date accomplishTime;


    /**
     * 标识异常订单
     */
    @ApiModelProperty("标识异常订单")
    private Integer orderFlag;


    /**
     * 是否被删除 0 否 1 是
     */
    @ApiModelProperty("是否被删除 0 否 1 是")
    private Boolean isDelete;


    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private Long createBy;


    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;


    /**
     * 最后更新人
     */
    @ApiModelProperty("最后更新人")
    private Long lastUpdateBy;


    /**
     * 最后修改时间
     */
    @ApiModelProperty("最后修改时间")
    private Date lastUpdateTime;


    @ApiModelProperty("订单详情")
    private List<MallOrderDetailDto> mallOrderDetailDtoList;

    private ShopUserGradeWealModel shopUserGradeWealModel = null;

    /**
     * 是否被拆分包裹 0:否 1:是
     */
    @ApiModelProperty("是否被拆分包裹 0(false)否 1(true)是")
    private Integer isSplitTheParcel;

    @ApiModelProperty("0:正常订单 -10:申请退款中 -20:退款中 -25:部分退款中 -30:已退款 -35:部分已退款 -40:退款失败")
    private Integer refundStatus; // 2019.05.09

    @ApiModelProperty("身份证信息id")
    private Long buyerCardNoId; // 2019.09.16

    public Long getBuyerCardNoId() {
        return buyerCardNoId;
    }

    public void setBuyerCardNoId(Long buyerCardNoId) {
        this.buyerCardNoId = buyerCardNoId;
    }

    public Integer getRefundStatus() {
        return refundStatus;
    }

    public void setRefundStatus(Integer refundStatus) {
        this.refundStatus = refundStatus;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getOrderCode() {
        return orderCode;
    }

    public void setOrderCode(String orderCode) {
        this.orderCode = orderCode;
    }

    public String getParentOrderCode() {
        return parentOrderCode;
    }

    public void setParentOrderCode(String parentOrderCode) {
        this.parentOrderCode = parentOrderCode;
    }

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public Long getBuyerUserId() {
        return buyerUserId;
    }

    public void setBuyerUserId(Long buyerUserId) {
        this.buyerUserId = buyerUserId;
    }

    public String getBuyerUserName() {
        return buyerUserName;
    }

    public void setBuyerUserName(String buyerUserName) {
        this.buyerUserName = buyerUserName;
    }

    public String getBuyerUserPhone() {
        return buyerUserPhone;
    }

    public void setBuyerUserPhone(String buyerUserPhone) {
        this.buyerUserPhone = buyerUserPhone;
    }

    public String getBuyerRealName() {
        return buyerRealName;
    }

    public void setBuyerRealName(String buyerRealName) {
        this.buyerRealName = buyerRealName;
    }

    public String getBuyerCardNo() {
        return buyerCardNo;
    }

    public void setBuyerCardNo(String buyerCardNo) {
        this.buyerCardNo = buyerCardNo;
    }

    public Long getShareUserId() {
        return shareUserId;
    }

    public void setShareUserId(Long shareUserId) {
        this.shareUserId = shareUserId;
    }

    public String getShareUserName() {
        return shareUserName;
    }

    public void setShareUserName(String shareUserName) {
        this.shareUserName = shareUserName;
    }

    public String getBuyerUserHeadUrl() {
        return buyerUserHeadUrl;
    }

    public void setBuyerUserHeadUrl(String buyerUserHeadUrl) {
        this.buyerUserHeadUrl = buyerUserHeadUrl;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public Long getOrderTotalAmount() {
        return orderTotalAmount;
    }

    public void setOrderTotalAmount(Long orderTotalAmount) {
        this.orderTotalAmount = orderTotalAmount;
    }

    public Long getItemTotalAmount() {
        return itemTotalAmount;
    }

    public void setItemTotalAmount(Long itemTotalAmount) {
        this.itemTotalAmount = itemTotalAmount;
    }

    public Long getActualAmount() {
        return actualAmount;
    }

    public void setActualAmount(Long actualAmount) {
        this.actualAmount = actualAmount;
    }

    public Long getConfirmPaidFee() {
        return confirmPaidFee;
    }

    public void setConfirmPaidFee(Long confirmPaidFee) {
        this.confirmPaidFee = confirmPaidFee;
    }

    public Long getFreightFee() {
        return freightFee;
    }

    public void setFreightFee(Long freightFee) {
        this.freightFee = freightFee;
    }

    public Double getDiscount() {
        return discount;
    }

    public void setDiscount(Double discount) {
        this.discount = discount;
    }

    public String getDiscountKey() {
        return discountKey;
    }

    public void setDiscountKey(String discountKey) {
        this.discountKey = discountKey;
    }

    public Long getMicroTeamId() {
        return microTeamId;
    }

    public void setMicroTeamId(Long microTeamId) {
        this.microTeamId = microTeamId;
    }

    public Long getFavorableFee1() {
        return favorableFee1;
    }

    public void setFavorableFee1(Long favorableFee1) {
        this.favorableFee1 = favorableFee1;
    }

    public Long getFavorableFee2() {
        return favorableFee2;
    }

    public void setFavorableFee2(Long favorableFee2) {
        this.favorableFee2 = favorableFee2;
    }

    public Long getFavorableFee3() {
        return favorableFee3;
    }

    public void setFavorableFee3(Long favorableFee3) {
        this.favorableFee3 = favorableFee3;
    }

    public Long getLargessAmount() {
        return largessAmount;
    }

    public void setLargessAmount(Long largessAmount) {
        this.largessAmount = largessAmount;
    }

    public Integer getCompensationType() {
        return compensationType;
    }

    public void setCompensationType(Integer compensationType) {
        this.compensationType = compensationType;
    }

    public Long getCompensationAmount() {
        return compensationAmount;
    }

    public void setCompensationAmount(Long compensationAmount) {
        this.compensationAmount = compensationAmount;
    }

    public Long getReturnAmount() {
        return returnAmount;
    }

    public void setReturnAmount(Long returnAmount) {
        this.returnAmount = returnAmount;
    }

    public Integer getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(Integer orderStatus) {
        this.orderStatus = orderStatus;
    }

    public Integer getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(Integer payStatus) {
        this.payStatus = payStatus;
    }

    public Integer getLogisticStatus() {
        return logisticStatus;
    }

    public void setLogisticStatus(Integer logisticStatus) {
        this.logisticStatus = logisticStatus;
    }

    public Integer getSignStatus() {
        return signStatus;
    }

    public void setSignStatus(Integer signStatus) {
        this.signStatus = signStatus;
    }

    public Long getOrderDeliveryAddressId() {
        return orderDeliveryAddressId;
    }

    public void setOrderDeliveryAddressId(Long orderDeliveryAddressId) {
        this.orderDeliveryAddressId = orderDeliveryAddressId;
    }

    public Long getInvoiceId() {
        return invoiceId;
    }

    public void setInvoiceId(Long invoiceId) {
        this.invoiceId = invoiceId;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public Integer getOrderSource() {
        return orderSource;
    }

    public void setOrderSource(Integer orderSource) {
        this.orderSource = orderSource;
    }

    public Integer getChannelSource() {
        return channelSource;
    }

    public void setChannelSource(Integer channelSource) {
        this.channelSource = channelSource;
    }

    public String getRemake() {
        return remake;
    }

    public void setRemake(String remake) {
        this.remake = remake;
    }

    public Long getDeliveryId() {
        return deliveryId;
    }

    public void setDeliveryId(Long deliveryId) {
        this.deliveryId = deliveryId;
    }

    public Boolean getIsParentOrder() {
        return isParentOrder;
    }

    public void setIsParentOrder(Boolean isParentOrder) {
        this.isParentOrder = isParentOrder;
    }

    public Boolean getIsApplyCancel() {
        return isApplyCancel;
    }

    public void setIsApplyCancel(Boolean isApplyCancel) {
        this.isApplyCancel = isApplyCancel;
    }

    public Long getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(Long supplierId) {
        this.supplierId = supplierId;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName;
    }

    public Date getApprovedTime() {
        return approvedTime;
    }

    public void setApprovedTime(Date approvedTime) {
        this.approvedTime = approvedTime;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public Date getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    public Date getShippingTime() {
        return shippingTime;
    }

    public void setShippingTime(Date shippingTime) {
        this.shippingTime = shippingTime;
    }

    public Date getAccomplishTime() {
        return accomplishTime;
    }

    public void setAccomplishTime(Date accomplishTime) {
        this.accomplishTime = accomplishTime;
    }

    public Integer getOrderFlag() {
        return orderFlag;
    }

    public void setOrderFlag(Integer orderFlag) {
        this.orderFlag = orderFlag;
    }

    public Boolean getIsDelete() {
        return isDelete;
    }

    public void setIsDelete(Boolean isDelete) {
        this.isDelete = isDelete;
    }

    public Long getCreateBy() {
        return createBy;
    }

    public void setCreateBy(Long createBy) {
        this.createBy = createBy;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Long getLastUpdateBy() {
        return lastUpdateBy;
    }

    public void setLastUpdateBy(Long lastUpdateBy) {
        this.lastUpdateBy = lastUpdateBy;
    }

    public Date getLastUpdateTime() {
        return lastUpdateTime;
    }

    public void setLastUpdateTime(Date lastUpdateTime) {
        this.lastUpdateTime = lastUpdateTime;
    }

    public List<MallOrderDetailDto> getMallOrderDetailDtoList() {
        return mallOrderDetailDtoList;
    }

    public void setMallOrderDetailDtoList(List<MallOrderDetailDto> mallOrderDetailDtoList) {
        this.mallOrderDetailDtoList = mallOrderDetailDtoList;
    }

    /********************************************/
    public Long getParentId() {
        return parentId;
    }

    public void setParentId(Long parentId) {
        this.parentId = parentId;
    }

    public Long getShareOrderId() {
        return shareOrderId;
    }

    public void setShareOrderId(Long shareOrderId) {
        this.shareOrderId = shareOrderId;
    }

    public Integer getIsSplitTheParcel() {
        return isSplitTheParcel;
    }

    public void setIsSplitTheParcel(Integer isSplitTheParcel) {
        this.isSplitTheParcel = isSplitTheParcel;
    }

}